class dealFile {
    constructor () {
        super()
    }
    /** 
        * 检测上传的文件 是否存在 如果存在在文件最后添加相应内容  例如当前上传文件名称是abc.doc,目前已存在的文件[abc.doc,def.dic] 则上传abc.doc文件名改成abc(1).doc
        * @param object file 当前传入的文件名
        * @param string type 需要比较的key
        * @param array listFile 当前已存在的文件
        * @param string customAdd 自定义需要添加的内容
    */
    detectionFieNameRepeat(file, type = 'name', customAddName = '(1)', listFile = []) {
        let parameter = file;
        const is = listFile.some((item) => {
            return item[type] === parameter[type];
        });
        if (is) {
            let name = parameter.type
            const FileType = name.substring(name.lastIndexOf('.'));
            const fileName = name.substring(0, name.lastIndexOf('.'));
            parameter = new File([file], `${fileName}${customAddName}${FileType}`);
            return detectionFieNameRepeat(parameter, type, customAddName, listFile);
        } else {
            return parameter;
        }
    }
    /** 
        * 将流文件转换为base64
        * @param string data 流
    */
    blobTurnFile(data) {
        //将流转换成Base64  Blob {size: 106679, type: 'application/x-download'}
        return new Promise((resolve, reject) => {
            const blob = data
            const reader = new FileReader();
            reader.readAsDataURL(blob);
            reader.onload = () => resolve(reader.result);
            reader.onerror = error => reject(error);
        });
    }
    /** 
        * base64文件过程导致a链接无法下载
        * @param string dataUrl 流
    */
    base64LengthCut(dataUrl) {
        let arr = dataUrl.split(',');
        let mime = arr[0].match(/:(.*?);/)[1];
        let bstr = atob(arr[1]);// atob解码base64  编码base64 btoa
        let n = bstr.length;
        let u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new Blob([u8arr], { type: mime });
    }
     /** 
        * base64生成一个a链接下载
        * @param string base64 地址
        * @param string name生成的文件名称
    */
    base64ExportDownLoad(base64, name) {
        let a = document.createElement('a');
        a.download = name;
        a.href = window.URL.createObjectURL(base64);
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
    }
}
export default dealFile